/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:DELL
 * Date:2024-11-02
 * Time:22:09
 */
public class MyCircularQueue {
    private int[] elem;
    private int front;//队头的下标
    private int rear;//队尾的下标

    public MyCircularQueue(int k) {
        this.elem=new int[k+1];//因为浪费了一个空间
    }
//入队
    public boolean enQueue(int value) {
        if(isFull()){
            return false;
        }
        elem[rear]=value;//放在rear位置，rear往后走
        rear=(rear+1)%elem.length;
        return true;
    }
//删除元素
    public boolean deQueue() {
        //空的，不能删
        if(isEmpty()){
            return false;
        }
        //2.不为空，则保存队头元素front往前走
        front=(front+1)%elem.length;
        return true;
    }
//得到队头元素
    public int Front() {
    if(isEmpty()){
        return -1;
    }
    return elem[front];
    }

    public int Rear() {
        if(isEmpty()){
            return -1;
        }
        //如果是0下标，是长度-1，因为rear-1，就变成-1了。
        int index=(rear==0)?elem.length-1:rear-1;
        return elem[index];
    }

    public boolean isEmpty() {
        return rear==front;
    }

    public boolean isFull() {
        if((rear+1)%elem.length==front){
            return true;
        }
        return false;
    }
}
